[IAD-MIGRATION-117] Создать миграцию

Контракты данных топиков Kafka контура обработки аудио и Whisper STT

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: Apache Kafka Cluster (Канонические топики).
  • Формат: JSON Schema.
  • Ссылка на Метод: Конфигурация метода
  • Статус: Готово к реализации

  • Спецификации контрактов:
1. Входящий медиа-топик для аудиозаписей bpds.inventory.in.voice.stream
{
  "\$schema": "https://json-schema.org",
  "title": "VoiceStreamUpload",
  "type": "object",
  "required": ["trace_id", "user_id", "home_group_id", "audio_file_url", "app_lang"],
  "properties": {
    "trace_id": { "type": "string" },
    "user_id": { "type": "string" },
    "home_group_id": { "type": "string" },
    "audio_file_url": { "type": "string", "format": "uri" },
    "app_lang": { "type": "string", "enum": ["ru", "en"], "default": "ru" }
  }
}
2. Распределительный топик результатов транскрибации bpds.inventory.in.receipt.upload

Примечание: Структура повторно используется и расширяется полем source для идентификации ИИ-воркера.

{
  "\$schema": "https://json-schema.org",
  "title": "STTReceiptUpload",
  "type": "object",
  "required": ["trace_id", "user_id", "home_group_id", "raw_text_input", "app_lang", "source"],
  "properties": {
    "trace_id": { "type": "string" },
    "user_id": { "type": "string" },
    "home_group_id": { "type": "string" },
    "raw_text_input": { "type": "string" },
    "app_lang": { "type": "string", "enum": ["ru", "en"] },
    "source": { "type": "string", "enum": ["WHISPER_STT_WORKER", "USER_EDIT"] }
  }
}
3. Топик трансляции черновиков для WebSocket-модерации bpds.mdm.in.product.process
{
  "\$schema": "https://json-schema.org",
  "title": "DraftProductProcess",
  "type": "object",
  "required": ["trace_id", "user_id", "home_group_id", "draft_data", "app_lang"],
  "properties": {
    "trace_id": { "type": "string" },
    "user_id": { "type": "string" },
    "home_group_id": { "type": "string" },
    "draft_data": {
      "type": "object",
      "required": ["ticket_id", "unverified_text"],
      "properties": {
        "ticket_id": { "type": "string" },
        "unverified_text": { "type": "string" }
      }
    },
    "app_lang": { "type": "string", "enum": ["ru", "en"] }
  }
}